package com.zpark.se.thread;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * 创建固定大小的线程池
 */
public class ThreadPool01 {
    public static void main(String[] args) {
        // 创建固定数量的线程池
        ExecutorService pool = Executors.newFixedThreadPool(5);

        // 线程池常用方法

        /*
         submit(Runnable task): 提交一个 Runnable 任务用于执行
         */
        pool.submit(new RunnableDemo03());

        /*
         invokeAll(Collection<? extends Callable<T>> tasks):
         提交一个 Collection 中所有的任务，等待所有任务结束，返回一个 Future 数组，
         数组中保存的是各个任务的 Future
         */
        //pool.invokeAll()

        /*
         shutdown(): 关闭线程池，线程池不再接受新的任务，但是会等待已经提交的任务执行完成
         */
        //pool.shutdown();

        /*
         shutdownNow(): 关闭线程池，线程池不再接受新的任务，并且打断正在执行的任务
         */
        pool.shutdownNow();
    }
}
